﻿<p>使用<code>ls</code>指令，查看当前目录下的文档列表：</p>
<pre><code>[root@localhost ~]# ls -l
total 2620
-rw-------. 1 root root    1096 Mar  5  2015 anaconda-ks.cfg
-rw-r--r--. 1 root root 2621440 Sep 16 11:04 api-http.war
drwxr-xr-x. 3 root root    4096 Sep 16 15:52 c:
-rw-r--r--. 1 root root   25150 Nov  6 14:29 dump.rdb
-rw-r--r--. 1 root root    8815 Mar  5  2015 install.log
-rw-r--r--. 1 root root    3384 Mar  5  2015 install.log.syslog
-rw-r--r--. 1 root root       2 Mar 31  2015 overcommit_memory~
drwxr-xr-x. 6 root root    4096 Mar  5  2015 soft</code></pre>

<p>查看上述结果，可以看到每个文档都是7部分组成，首先我们来解释一下这七部分各代表的含义：</p>
<img src="~/img/linux/docsproperty1.jpg" />
<ol>
    <li><p><strong>第一栏表示档案类型与权限，此栏共10个字符长度，各个长度的字符代表的含义如下图所示：</strong></p>
    <img src="~/img/linux/docsproperty2.jpg" />
    <ul>
        <li>
            <p>第一个字符用来表示档案类型，代表了这个档案是『目录、档案或链接文件等等』</p>
            <div class="bs-callout bs-callout-warning">
                <h4>档案类型</h4>
                <ul>
                    <li>当为[ d ]则是目录，例如上表档名为『c:』的那一行； </li>
                    <li>当为[ - ]则是档案，例如上表档名为『anaconda-ks.cfg』那一行； </li>
                    <li>若是[ l ]则表示为连结档(link file)； </li>
                    <li>若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)；</li>
                    <li>若是[ c ]则表示为装置文件里面的串行端口设备，例如键盘、鼠标(一次性读取装置)。 </li>
                </ul>
            </div>
        </li>
        <li><p>第2-10个字符，每三个为一组，分别代表档案的拥有者、同群组、其他人的权限。权限表示为[rwx]，[ r ]代表可读 (read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 这三个权限的位置不会改变，如果没有权限，就会出现减号[ - ]而已。</p></li>
    </ul>
    </li>
    <li><p><strong>第二栏表示有多少档名连结到此节点(i-node)：</strong></p>
        <p>
            每个档案都会将他的权限与属性记录到文件系统的i-node中，不过，我们使用的目录树却是使用文件名来记录，
            因此每个档名就会连结到一个i-node啰！这个属性记录的，
            就是有多少不同的档名连结到相同的一个i-node号码去就是了。
        </p> 
    </li>
    <li><p>第三栏表示这个档案(或目录)的『拥有者账号』</p></li>
    <li><p>第四栏表示这个档案的所属群组</p></li>
    <li><p>第五栏为这个档案的容量大小，默认单位为bytes；</p></li>
    <li><p>第六栏为这个档案的建档日期或者是最近的修改日期：</p>
        <div class="bs-callout bs-callout-warning">
            <h4>注意</h4>
            <p>这一栏的内容分别为日期(月/日)及时间。如果这个档案被修改的时间距离现在太久了，那么时间部分会仅显示年份而已。 
                如果想要显示完整的时间格式，可以利用ls的选项，亦即：<code>$ ls -l --full-time</code>就能够显示出完整的时间格式了包括年、月、日、时间。 </p>
        </div>
    </li>
    <li><p>第七栏为这个档案的档名</p>
        <p>
            比较特殊的是：如果档名之前多一个『 . 』，则代表这个档案为『隐藏档』，你可以使用『ls』及『ls -a』这两个指令去感受一下什么是隐藏档！
        </p>
    </li>
</ol>

<p><strong>档案权限对于一般档案与目录档案有着不同的意义:</strong></p>

<ul>
    <li><strong>权限对档案的意义</strong></li>
    <p>
        档案是实际含有数据的地方，包括一般文本文件、数据库内容文件、二进制可执行文件(binary
        program)等等。 因此，权限对于档案来说，他的意义是这样的：
    </p>
    <ul>
        <li><code>r (read)</code>：可读取此一档案的实际内容，如读取文本文件的文字内容等；</li>
        <li>
            <code>w (write)</code>：可以编辑、新增或者是修改该档案的内容(但不含删除该档案)；<br />
            因为档案记录的是实际的数据,所以对于档案的<code>rwx</code>来说， 主要都是针对『档案的内
            容』而言，与档案档名的存在与否没有关系，即不含有删除档案的权限。
        </li>
        <li><code>x (eXecute)</code>：该档案具有可以被系统执行的权限。</li>
    </ul>
    <li><strong>权限对目录的意义</strong></li>
    <p>目录主要的内容在记录文件名列表，文件名与目录有强烈的关连</p>
    <ul>
        <li>
            <code>r (read contents in directory)</code>：<br />
            表示具有读取目录结构列表的权限，所以当你具有读取<code>r</code>一个目录的权限时，表示你可以查询该
            目录下的文件名数据。 所以你就可以利用 <code>ls</code> 这个指令将该目录的内容列表显示出来！
        </li>
        <li>
            <code>w (modify contents of directory)</code>：<br />
            这个可写入的权限对目录来说，是很了不起的！ 因为他表示你具有异动该目录结构列表的权
            限，也就是底下这些权限：<br />
            <ol>
                <li>建立新的档案与目录；</li>
                <li>删除已经存在的档案与目录(不论该档案的权限为何！)</li>
                <li>将已存在的档案或目录进行更名；</li>
                <li>搬移该目录内的档案、目录位置。</li>
            </ol>
            总之，目录的w 权限就与该目录底下的文件名异动有关就对了！
        </li>
        <li>
            <code>x (access directory)</code>：<br />
            目录不可以被执行，目录的x代表的是用户能否进入该目录成为工作目录。
        </li>
    </ul>
</ul>